//
//  LinkedList.swift
//  ArithmeticWithSwift
//
//  Created by 神州锐达 on 2018/9/26.
//  Copyright © 2018年 onePiece. All rights reserved.
//

import Foundation

//链表
//链表是一串在存储空间上非连续性、顺序的存储结构.由节点进行头尾依次连接而形成链表.每个结点有包括两个部分:数据域和下个节点的指针域.

//生成节点
class ListNode {
    //    数据域
    var val: Int
    //    指针域
    var next: ListNode?
    
    init(_ val: Int) {
        self.val = val
        self.next = nil
    }
}

//实现头插法和尾插法 头插法:当前节点插到第一个节点之前， 尾插法:当前节点插入到链表最后一个节点之后。

class List {
    
    var head: ListNode?
    var tail: ListNode?
    
    //    头插法
    func appendToHead(_ val: Int) -> Void {
        if head == nil {
            //            创建头结点
            head = ListNode(val)
            tail = head
        }else{
            let temp = ListNode(val)
            //把当前head地址赋给temp的指针域
            temp.next = head
            head = temp
        }
    }
    
    
    //尾插法
    func appendToTail(_ val: Int) -> Void {
        
        if tail == nil {
            tail = ListNode(val)
            head = tail
        }else{
            let temp = ListNode(val)
            tail?.next = temp
            tail = temp
            
        }
        
    }
    
}
